<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilsecure: xsecure_lms_ots.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilsecure
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xsecure__lms__ots_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">xsecure_lms_ots.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains structures, constants and defines used in LMS OTS and provides interface to LMS OTS operations. </p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date        Changes
----- ---- -------- ----------------------------------------------------------
5.4   kal  07/24/24 Initial release</pre><pre></pre><dl class="section note"><dt>Note</dt><dd></dd></dl>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_x_secure___lms_ots_public_key__.html">XSecure_LmsOtsPublicKey_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">LMS OTS Public key structure.  <a href="union_x_secure___lms_ots_public_key__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_x_secure___lms_ots_hash_per_digit__.html">XSecure_LmsOtsHashPerDigit_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary buffer, used in LMS OTS signature verification, used in hash chain to arrive at values which will be concatenated and hashed to get public value.  <a href="union_x_secure___lms_ots_hash_per_digit__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_x_secure___lms_ots_sign_to_pub_key_hash__.html">XSecure_LmsOtsSignToPubKeyHash_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure used when validating LMS OTS, once hash chain is completed, result needs to be stored so that they can be further concatenated and hashed to get OTS public key, this provides a way to access members and fill data in a structured way.  <a href="union_x_secure___lms_ots_sign_to_pub_key_hash__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___lms_ots_signature__.html">XSecure_LmsOtsSignature_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Partial LMS OTS Signature structure.  <a href="struct_x_secure___lms_ots_signature__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_x_secure___lms_data_digest_fixed_fields__.html">XSecure_LmsDataDigestFixedFields_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary buffer, used to send prefix fields to calculate digest for data to be authenticate.  <a href="union_x_secure___lms_data_digest_fixed_fields__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="union_x_secure___lms_data_digest__.html">XSecure_LmsDataDigest_</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Digest for message to be authenticated, along with checksum.  <a href="union_x_secure___lms_data_digest__.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ac558edd4dd7643d17f2378f538378ce2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ac558edd4dd7643d17f2378f538378ce2">XSECURE_LMS_OTS_TYPE_MAX_SUPPORTED</a>&#160;&#160;&#160;(7U)</td></tr>
<tr class="memdesc:ac558edd4dd7643d17f2378f538378ce2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Max supported types, used for creating lookup table for parameters for types supported number should be max valid + 1 (as first slot will be for invalid parameterXSecure_LmsOtsType XSecure_LmsOtsType.  <a href="#ac558edd4dd7643d17f2378f538378ce2">More...</a><br/></td></tr>
<tr class="separator:ac558edd4dd7643d17f2378f538378ce2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeebd096c31f8e28bda96fb99ae3c708a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#aeebd096c31f8e28bda96fb99ae3c708a">XSECURE_LMS_DIGEST_CHECKSUM_SIZE</a></td></tr>
<tr class="memdesc:aeebd096c31f8e28bda96fb99ae3c708a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Digest of data to be authenticated concatenated with checksum value.  <a href="#aeebd096c31f8e28bda96fb99ae3c708a">More...</a><br/></td></tr>
<tr class="separator:aeebd096c31f8e28bda96fb99ae3c708a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a434d38a2acb11f42b7fed781844eb3ee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a434d38a2acb11f42b7fed781844eb3ee">XSECURE_LMS_MESSAGE_TO_DIGEST_PREFIX_SIZE</a></td></tr>
<tr class="memdesc:a434d38a2acb11f42b7fed781844eb3ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prefix fields length, before sending actual data to sha engine for digest.  <a href="#a434d38a2acb11f42b7fed781844eb3ee">More...</a><br/></td></tr>
<tr class="separator:a434d38a2acb11f42b7fed781844eb3ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3d009a0481c020ebf60f58d407264b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ac3d009a0481c020ebf60f58d407264b9">XSECURE_LMS_OTS_PUB_KEY_TOTAL_SIZE</a></td></tr>
<tr class="memdesc:ac3d009a0481c020ebf60f58d407264b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">OTS Public key total size.  <a href="#ac3d009a0481c020ebf60f58d407264b9">More...</a><br/></td></tr>
<tr class="separator:ac3d009a0481c020ebf60f58d407264b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45f1bba20bcc06a4361b89c1d5a65668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a45f1bba20bcc06a4361b89c1d5a65668">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_TOTAL_SIZE</a></td></tr>
<tr class="memdesc:a45f1bba20bcc06a4361b89c1d5a65668"><td class="mdescLeft">&#160;</td><td class="mdescRight">Total size of buffer, <a class="el" href="xsecure__lms__ots_8h.html#ad723b74a2a699cb721e81b18834d2b3f">XSecure_LmsOtsHashPerDigit</a>.  <a href="#a45f1bba20bcc06a4361b89c1d5a65668">More...</a><br/></td></tr>
<tr class="separator:a45f1bba20bcc06a4361b89c1d5a65668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82176c002a5c65e1876ec23722ca8c9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a82176c002a5c65e1876ec23722ca8c9e">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_TOTAL_SIZE</a></td></tr>
<tr class="memdesc:a82176c002a5c65e1876ec23722ca8c9e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><pre class="fragment">Max possible size as supported
</pre><p> only till XSECURE_LMS_OTS_W2  <a href="#a82176c002a5c65e1876ec23722ca8c9e">More...</a><br/></td></tr>
<tr class="separator:a82176c002a5c65e1876ec23722ca8c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a933c28504d62c99bb41fd687a98dda90"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a933c28504d62c99bb41fd687a98dda90">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_CURRENT_SIZE</a>(p)</td></tr>
<tr class="memdesc:a933c28504d62c99bb41fd687a98dda90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Total Size of buffer used in OTS verification, while considering current 'p' parameter.  <a href="#a933c28504d62c99bb41fd687a98dda90">More...</a><br/></td></tr>
<tr class="separator:a933c28504d62c99bb41fd687a98dda90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9927e5c3c5d95e9d1b82ffaf800c241"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ac9927e5c3c5d95e9d1b82ffaf800c241">XSECURE_LMS_OTS_PUBKEY_I_OFFSET</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:ac9927e5c3c5d95e9d1b82ffaf800c241"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'I' field in OTS Public key.  <a href="#ac9927e5c3c5d95e9d1b82ffaf800c241">More...</a><br/></td></tr>
<tr class="separator:ac9927e5c3c5d95e9d1b82ffaf800c241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15c74a74560860dfadce0dd25a9cbf1b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a15c74a74560860dfadce0dd25a9cbf1b">XSECURE_LMS_OTS_PUBKEY_Q_OFFSET</a></td></tr>
<tr class="memdesc:a15c74a74560860dfadce0dd25a9cbf1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'q' field in OTS Public key.  <a href="#a15c74a74560860dfadce0dd25a9cbf1b">More...</a><br/></td></tr>
<tr class="separator:a15c74a74560860dfadce0dd25a9cbf1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57cc8baa8a82a27f721b46f46a21b159"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a57cc8baa8a82a27f721b46f46a21b159">XSECURE_LMS_OTS_SIGN_TYPE_FIELD_OFFSET</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:a57cc8baa8a82a27f721b46f46a21b159"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'Type' field in OTS Signature buffer.  <a href="#a57cc8baa8a82a27f721b46f46a21b159">More...</a><br/></td></tr>
<tr class="separator:a57cc8baa8a82a27f721b46f46a21b159"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf5b0f6845109ee4715a5f00c732c0b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#adf5b0f6845109ee4715a5f00c732c0b5">XSECURE_LMS_OTS_SIGN_C_FIELD_OFFSET</a></td></tr>
<tr class="memdesc:adf5b0f6845109ee4715a5f00c732c0b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'C' field in OTS Signature buffer.  <a href="#adf5b0f6845109ee4715a5f00c732c0b5">More...</a><br/></td></tr>
<tr class="separator:adf5b0f6845109ee4715a5f00c732c0b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b359b6616f5f14b2aec628127efedb3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a3b359b6616f5f14b2aec628127efedb3">XSECURE_LMS_OTS_SIGN_Y_FIELD_OFFSET</a></td></tr>
<tr class="memdesc:a3b359b6616f5f14b2aec628127efedb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'Y' field in OTS Signature buffer.  <a href="#a3b359b6616f5f14b2aec628127efedb3">More...</a><br/></td></tr>
<tr class="separator:a3b359b6616f5f14b2aec628127efedb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac4a22a134d85196ad6251a8625d0540"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#aac4a22a134d85196ad6251a8625d0540">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_I_OFFSET</a>&#160;&#160;&#160;(1U)</td></tr>
<tr class="memdesc:aac4a22a134d85196ad6251a8625d0540"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'I' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations.  <a href="#aac4a22a134d85196ad6251a8625d0540">More...</a><br/></td></tr>
<tr class="separator:aac4a22a134d85196ad6251a8625d0540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aa682e71138d9b9168c6d9ccf8bb045"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a2aa682e71138d9b9168c6d9ccf8bb045">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Q_OFFSET</a></td></tr>
<tr class="memdesc:a2aa682e71138d9b9168c6d9ccf8bb045"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'q' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations.  <a href="#a2aa682e71138d9b9168c6d9ccf8bb045">More...</a><br/></td></tr>
<tr class="separator:a2aa682e71138d9b9168c6d9ccf8bb045"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872fd1b27436b36a3bdb133e5d93b546"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a872fd1b27436b36a3bdb133e5d93b546">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_OFFSET</a></td></tr>
<tr class="memdesc:a872fd1b27436b36a3bdb133e5d93b546"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'i' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations.  <a href="#a872fd1b27436b36a3bdb133e5d93b546">More...</a><br/></td></tr>
<tr class="separator:a872fd1b27436b36a3bdb133e5d93b546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36a971ffbf11978decc4a0a1dc3cfc2d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a36a971ffbf11978decc4a0a1dc3cfc2d">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_OFFSET</a></td></tr>
<tr class="memdesc:a36a971ffbf11978decc4a0a1dc3cfc2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'j' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations.  <a href="#a36a971ffbf11978decc4a0a1dc3cfc2d">More...</a><br/></td></tr>
<tr class="separator:a36a971ffbf11978decc4a0a1dc3cfc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e7bc6e10bad27014918aefba9c22e7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a4e7bc6e10bad27014918aefba9c22e7f">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Y_OFFSET</a></td></tr>
<tr class="memdesc:a4e7bc6e10bad27014918aefba9c22e7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'Y' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations.  <a href="#a4e7bc6e10bad27014918aefba9c22e7f">More...</a><br/></td></tr>
<tr class="separator:a4e7bc6e10bad27014918aefba9c22e7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4f452928f5c6d3dee20a89eb65ea74d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ae4f452928f5c6d3dee20a89eb65ea74d">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_I_OFFSET</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:ae4f452928f5c6d3dee20a89eb65ea74d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'I' field in temporary buffer, where inner loops result is concatenated during OTS operations.  <a href="#ae4f452928f5c6d3dee20a89eb65ea74d">More...</a><br/></td></tr>
<tr class="separator:ae4f452928f5c6d3dee20a89eb65ea74d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8ca7a1a78fe23831689ed42f85486b7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ae8ca7a1a78fe23831689ed42f85486b7">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Q_OFFSET</a></td></tr>
<tr class="memdesc:ae8ca7a1a78fe23831689ed42f85486b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'q' field in temporary buffer, where inner loops result is concatenated during OTS operations.  <a href="#ae8ca7a1a78fe23831689ed42f85486b7">More...</a><br/></td></tr>
<tr class="separator:ae8ca7a1a78fe23831689ed42f85486b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4099a5d490b4e96ea8e446cdb9ef9f0e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a4099a5d490b4e96ea8e446cdb9ef9f0e">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_D_PBLC_OFFSET</a></td></tr>
<tr class="memdesc:a4099a5d490b4e96ea8e446cdb9ef9f0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of D_PBLC field in temporary buffer, where inner loops result is concatenated during OTS operations.  <a href="#a4099a5d490b4e96ea8e446cdb9ef9f0e">More...</a><br/></td></tr>
<tr class="separator:a4099a5d490b4e96ea8e446cdb9ef9f0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf43d3cc0d824419b7f2e25d324735ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#adf43d3cc0d824419b7f2e25d324735ec">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Z_OFFSET</a></td></tr>
<tr class="memdesc:adf43d3cc0d824419b7f2e25d324735ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset of 'z' field in temporary buffer, where inner loops result is concatenated during OTS operations.  <a href="#adf43d3cc0d824419b7f2e25d324735ec">More...</a><br/></td></tr>
<tr class="separator:adf43d3cc0d824419b7f2e25d324735ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a803c68a2b51e6f2aedd0030499bd932a"><td class="memItemLeft" align="right" valign="top">typedef union <br class="typebreak"/>
<a class="el" href="union_x_secure___lms_ots_public_key__.html">XSecure_LmsOtsPublicKey_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a803c68a2b51e6f2aedd0030499bd932a">XSecure_LmsOtsPublicKey</a></td></tr>
<tr class="memdesc:a803c68a2b51e6f2aedd0030499bd932a"><td class="mdescLeft">&#160;</td><td class="mdescRight">LMS OTS Public key structure.  <a href="#a803c68a2b51e6f2aedd0030499bd932a">More...</a><br/></td></tr>
<tr class="separator:a803c68a2b51e6f2aedd0030499bd932a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad723b74a2a699cb721e81b18834d2b3f"><td class="memItemLeft" align="right" valign="top">typedef union <br class="typebreak"/>
<a class="el" href="union_x_secure___lms_ots_hash_per_digit__.html">XSecure_LmsOtsHashPerDigit_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ad723b74a2a699cb721e81b18834d2b3f">XSecure_LmsOtsHashPerDigit</a></td></tr>
<tr class="memdesc:ad723b74a2a699cb721e81b18834d2b3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary buffer, used in LMS OTS signature verification, used in hash chain to arrive at values which will be concatenated and hashed to get public value.  <a href="#ad723b74a2a699cb721e81b18834d2b3f">More...</a><br/></td></tr>
<tr class="separator:ad723b74a2a699cb721e81b18834d2b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4259aa07b5254dccc5ce3bedf2a7cb5c"><td class="memItemLeft" align="right" valign="top">typedef union <br class="typebreak"/>
<a class="el" href="union_x_secure___lms_ots_sign_to_pub_key_hash__.html">XSecure_LmsOtsSignToPubKeyHash_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a4259aa07b5254dccc5ce3bedf2a7cb5c">XSecure_LmsOtsSignToPubKeyHash</a></td></tr>
<tr class="memdesc:a4259aa07b5254dccc5ce3bedf2a7cb5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure used when validating LMS OTS, once hash chain is completed, result needs to be stored so that they can be further concatenated and hashed to get OTS public key, this provides a way to access members and fill data in a structured way.  <a href="#a4259aa07b5254dccc5ce3bedf2a7cb5c">More...</a><br/></td></tr>
<tr class="separator:a4259aa07b5254dccc5ce3bedf2a7cb5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8ec8aa23f647c6cc236d649e8b63464"><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="struct_x_secure___lms_ots_signature__.html">XSecure_LmsOtsSignature_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#aa8ec8aa23f647c6cc236d649e8b63464">XSecure_LmsOtsSignature</a></td></tr>
<tr class="memdesc:aa8ec8aa23f647c6cc236d649e8b63464"><td class="mdescLeft">&#160;</td><td class="mdescRight">Partial LMS OTS Signature structure.  <a href="#aa8ec8aa23f647c6cc236d649e8b63464">More...</a><br/></td></tr>
<tr class="separator:aa8ec8aa23f647c6cc236d649e8b63464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1d840c18fbf4e517287bf3ee6301481"><td class="memItemLeft" align="right" valign="top">typedef union <br class="typebreak"/>
<a class="el" href="union_x_secure___lms_data_digest_fixed_fields__.html">XSecure_LmsDataDigestFixedFields_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ac1d840c18fbf4e517287bf3ee6301481">XSecure_LmsDataDigestFixedFields</a></td></tr>
<tr class="memdesc:ac1d840c18fbf4e517287bf3ee6301481"><td class="mdescLeft">&#160;</td><td class="mdescRight">Temporary buffer, used to send prefix fields to calculate digest for data to be authenticate.  <a href="#ac1d840c18fbf4e517287bf3ee6301481">More...</a><br/></td></tr>
<tr class="separator:ac1d840c18fbf4e517287bf3ee6301481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05542fcb5897f19f42bef397a9ae5700"><td class="memItemLeft" align="right" valign="top">typedef union <br class="typebreak"/>
<a class="el" href="union_x_secure___lms_data_digest__.html">XSecure_LmsDataDigest_</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a05542fcb5897f19f42bef397a9ae5700">XSecure_LmsDataDigest</a></td></tr>
<tr class="memdesc:a05542fcb5897f19f42bef397a9ae5700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Digest for message to be authenticated, along with checksum.  <a href="#a05542fcb5897f19f42bef397a9ae5700">More...</a><br/></td></tr>
<tr class="separator:a05542fcb5897f19f42bef397a9ae5700"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ac44fed4428b1bce22f588c3c913818fd"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a> { , <br/>
&#160;&#160;<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda6619d07dcdfb27f24037d94c2da75b7b">XSECURE_LMS_OTS_SHA256_N32_W4</a> = 0x00000003U,
<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdaa2c7ed54a7b6a5dfe926d865e7d0e097">XSECURE_LMS_OTS_SHA256_N32_W8</a> = 0x00000004U,
<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda350496cca3b0fceb91fa5611ab7080c3">XSECURE_LMS_OTS_SHAKE_N32_W2</a> = 0x0000000AU,
<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda52b24128174e65c3d46d6b6db0675b34">XSECURE_LMS_OTS_SHAKE_N32_W4</a> = 0x0000000BU,
<br/>
&#160;&#160;<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdafd794b1bd3853e376d68972147b2e063">XSECURE_LMS_OTS_SHAKE_N32_W8</a> = 0x0000000CU,
<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdab0be342315c7753f9987ad7d713b6fbd">XSECURE_LMS_OTS_NOT_SUPPORTED</a>
<br/>
 }</td></tr>
<tr class="memdesc:ac44fed4428b1bce22f588c3c913818fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Types of LMS_OTS supported.  <a href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">More...</a><br/></td></tr>
<tr class="separator:ac44fed4428b1bce22f588c3c913818fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98e7ae28a938a2adda1c9d415f68a3cd"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cd">XSecure_LmsOtsWIndex</a> { , <a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cda88b2c964e9fb3bddfec0436b3f6f5e0c">XSECURE_LMS_OTS_W4</a> = 4U,
<a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cda507a403665f09b7704663ec47209f550">XSECURE_LMS_OTS_W8</a> = 8U
 }</td></tr>
<tr class="memdesc:a98e7ae28a938a2adda1c9d415f68a3cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of bits per digit Possible values are as supported by ROM, w=1 is not supported.  <a href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cd">More...</a><br/></td></tr>
<tr class="separator:a98e7ae28a938a2adda1c9d415f68a3cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a797bf08fbeb731c200889e97c2024349"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349">XSecure_LmsOtsuIndex</a> { , <a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349a0387d324313898d9fa5db0bc0ddd4058">XSECURE_LMS_OTS_W4_U</a> = 64U,
<a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349a934a8457911f4003bf7c4584804cbe3e">XSECURE_LMS_OTS_W8_U</a> = 32U
 }</td></tr>
<tr class="memdesc:a797bf08fbeb731c200889e97c2024349"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of 'w' width digits possible in message Digest, excluding checksum Possible values are as supported by ROM.  <a href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349">More...</a><br/></td></tr>
<tr class="separator:a797bf08fbeb731c200889e97c2024349"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48ca7b856b1c924469c32ed0b974b8d5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5">XSecure_LmsOtsvIndex</a> { , <a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5aabbb56f1b23fcf58fa2270a9ce7b942f">XSECURE_LMS_OTS_W4_V</a> = 3U,
<a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5a8b42f1fc9faa06cbb2cf38aab405e238">XSECURE_LMS_OTS_W8_V</a> = 2U
 }</td></tr>
<tr class="memdesc:a48ca7b856b1c924469c32ed0b974b8d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is the number of 'w' width digits possible in checksum Possible values are as supported by ROM.  <a href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5">More...</a><br/></td></tr>
<tr class="separator:a48ca7b856b1c924469c32ed0b974b8d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a934fb8a4fb645f4419a0c10eceb4b883"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883">XSecure_LmsOtslsIndex</a> { , <a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a4d6adf053e43c722afcd7dc7eafbfc12">XSECURE_LMS_OTS_W4_LS</a> = 4U,
<a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a479e16a32a72d34466dcb570db3ebdba">XSECURE_LMS_OTS_W8_LS</a> = 0U,
<a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a0636fed8c37d4a35fce4dc7eb7e7d5aa">XSECURE_LMS_OTS_LS_NOT_SUPPORTED</a> = 16U
 }</td></tr>
<tr class="memdesc:a934fb8a4fb645f4419a0c10eceb4b883"><td class="mdescLeft">&#160;</td><td class="mdescRight">No.of bits to left-shift in Checksum, in the 16 bit value Possible values are as supported by ROM.  <a href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883">More...</a><br/></td></tr>
<tr class="separator:a934fb8a4fb645f4419a0c10eceb4b883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54c7dfec9549d6617d8bcd3bf7b1f8bd"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bd">XSecure_LmsOtspIndex</a> { , <a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bda2b630ba4210f383d7cc53575cca1637d">XSECURE_LMS_OTS_W4_P</a> = 67U,
<a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bda8206e08695b310bd5b6769859e06179c">XSECURE_LMS_OTS_W8_P</a> = 34U
 }</td></tr>
<tr class="memdesc:a54c7dfec9549d6617d8bcd3bf7b1f8bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is a sum of U + V, it is number of 'w' width digits possible in digest + checksum buffer Possible values are as supported by ROM.  <a href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bd">More...</a><br/></td></tr>
<tr class="separator:a54c7dfec9549d6617d8bcd3bf7b1f8bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a962337132813f098ed3a128cb4167b27"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a962337132813f098ed3a128cb4167b27">XSecure_LmsOtsCoeff</a> (u8 const *const Arr, const u32 ArrayIndex, const u32 w)</td></tr>
<tr class="memdesc:a962337132813f098ed3a128cb4167b27"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function extracts the digits from the array for bytes.  <a href="#a962337132813f098ed3a128cb4167b27">More...</a><br/></td></tr>
<tr class="separator:a962337132813f098ed3a128cb4167b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4b1b7bba0abda9f7e5f7431cf2e07ce"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ae4b1b7bba0abda9f7e5f7431cf2e07ce">XSecure_LmsOtsComputeChecksum</a> (const u8 *const Array, const u32 ArrayLen, const u32 w, const u32 ls, u32 *const <a class="el" href="xsecure__lms__ots_8h.html#a97ec2bf3dbf9fab80e5046d5c3394633">Checksum</a>)</td></tr>
<tr class="memdesc:ae4b1b7bba0abda9f7e5f7431cf2e07ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates the checksum for a given array.  <a href="#ae4b1b7bba0abda9f7e5f7431cf2e07ce">More...</a><br/></td></tr>
<tr class="separator:ae4b1b7bba0abda9f7e5f7431cf2e07ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48db68f8b63048019c35a756e58d9181"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a48db68f8b63048019c35a756e58d9181">XSecure_LmsOtsLookupParamSet</a> (<a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a> <a class="el" href="xsecure__lms__ots_8h.html#a8edafe9629f0c895a14f0e7445bcbd5c">Type</a>, XSecure_LmsOtsParam **Parameters)</td></tr>
<tr class="memdesc:a48db68f8b63048019c35a756e58d9181"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function returns the parameters for the type of LMS OTS type.  <a href="#a48db68f8b63048019c35a756e58d9181">More...</a><br/></td></tr>
<tr class="separator:a48db68f8b63048019c35a756e58d9181"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a8edafe9629f0c895a14f0e7445bcbd5c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a8edafe9629f0c895a14f0e7445bcbd5c">Type</a></td></tr>
<tr class="memdesc:a8edafe9629f0c895a14f0e7445bcbd5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a> Size - 4 bytes, 0 to 3 bytes in public key.  <a href="#a8edafe9629f0c895a14f0e7445bcbd5c">More...</a><br/></td></tr>
<tr class="separator:a8edafe9629f0c895a14f0e7445bcbd5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a377605accacdcb3accbf35fa586c7fc0"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a377605accacdcb3accbf35fa586c7fc0">I</a> [XSECURE_LMS_I_FIELD_SIZE]</td></tr>
<tr class="memdesc:a377605accacdcb3accbf35fa586c7fc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">I - Merkle Tree's unique identifier (uniformly random 16-byte string) Size - 16 bytes, 4 to 19 bytes in public key.  <a href="#a377605accacdcb3accbf35fa586c7fc0">More...</a><br/></td></tr>
<tr class="separator:a377605accacdcb3accbf35fa586c7fc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5825356ee1c7b65915d9daac40647fb3"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a5825356ee1c7b65915d9daac40647fb3">q</a></td></tr>
<tr class="memdesc:a5825356ee1c7b65915d9daac40647fb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">q - The leaf number q, goes from 0 on left most leaf to right most (2^h -1), in a single tree Size - 4 bytes, 20 to 23 bytes in public key  <a href="#a5825356ee1c7b65915d9daac40647fb3">More...</a><br/></td></tr>
<tr class="separator:a5825356ee1c7b65915d9daac40647fb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1409f77262465120c3094dcd039e1f32"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a1409f77262465120c3094dcd039e1f32">K</a> [XSECURE_LMS_OTS_PUB_KEY_K_FIELD_SIZE]</td></tr>
<tr class="memdesc:a1409f77262465120c3094dcd039e1f32"><td class="mdescLeft">&#160;</td><td class="mdescRight">K - H(I || u32str(q) || u16str(D_PBLC) || y[0] || ...  <a href="#a1409f77262465120c3094dcd039e1f32">More...</a><br/></td></tr>
<tr class="separator:a1409f77262465120c3094dcd039e1f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c9159ef295db215ddbc4ab9ddd38e3"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a82c9159ef295db215ddbc4ab9ddd38e3">Reserved</a></td></tr>
<tr class="memdesc:a82c9159ef295db215ddbc4ab9ddd38e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">1 reserved byte added at start of buffer, to manage word aligned sha finish copies to buffer  <a href="#a82c9159ef295db215ddbc4ab9ddd38e3">More...</a><br/></td></tr>
<tr class="separator:a82c9159ef295db215ddbc4ab9ddd38e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a393f638b7c12c0c9cb43973cf6aab5c2"><td class="memItemLeft" align="right" valign="top">u16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a393f638b7c12c0c9cb43973cf6aab5c2">i</a></td></tr>
<tr class="memdesc:a393f638b7c12c0c9cb43973cf6aab5c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">i - Digit position in (Digest || Checksum), 0 to (p-1) digits.  <a href="#a393f638b7c12c0c9cb43973cf6aab5c2">More...</a><br/></td></tr>
<tr class="separator:a393f638b7c12c0c9cb43973cf6aab5c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a71261a266a41e4450a2f006404ea8a"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a8a71261a266a41e4450a2f006404ea8a">j</a></td></tr>
<tr class="memdesc:a8a71261a266a41e4450a2f006404ea8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">j - Index for inner loop during signature verification, starts at digit value in (Digest || Checksum) ends at (2^w - 1).  <a href="#a8a71261a266a41e4450a2f006404ea8a">More...</a><br/></td></tr>
<tr class="separator:a8a71261a266a41e4450a2f006404ea8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41fbc9ee57e6872539319419856a7d55"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a41fbc9ee57e6872539319419856a7d55">y</a> [XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Y_SIZE]</td></tr>
<tr class="memdesc:a41fbc9ee57e6872539319419856a7d55"><td class="mdescLeft">&#160;</td><td class="mdescRight">y[] - 'n' bytes picked from LMS OTS signatures.  <a href="#a41fbc9ee57e6872539319419856a7d55">More...</a><br/></td></tr>
<tr class="separator:a41fbc9ee57e6872539319419856a7d55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6383a70e17a038a7995b71be0f5e2107"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a6383a70e17a038a7995b71be0f5e2107">D_PBLC</a> [2U]</td></tr>
<tr class="memdesc:a6383a70e17a038a7995b71be0f5e2107"><td class="mdescLeft">&#160;</td><td class="mdescRight">D_PBLC - XSECURE_D_PBLC Size - 2 Bytes, 20 to 21 bytes.  <a href="#a6383a70e17a038a7995b71be0f5e2107">More...</a><br/></td></tr>
<tr class="separator:a6383a70e17a038a7995b71be0f5e2107"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a588f37e411aac68f85ebb950026ffb9a"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a588f37e411aac68f85ebb950026ffb9a">z</a> [XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_z_SIZE]</td></tr>
<tr class="memdesc:a588f37e411aac68f85ebb950026ffb9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">z - Each z is a XSECURE_LMS_N_FIELD_SIZE byte length, and ranges from 0 to p-1 Size - (32 Bytes * p)  <a href="#a588f37e411aac68f85ebb950026ffb9a">More...</a><br/></td></tr>
<tr class="separator:a588f37e411aac68f85ebb950026ffb9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55eb825a4f4ea56d3a71d9d88ec8e822"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a55eb825a4f4ea56d3a71d9d88ec8e822">D_MESG</a> [XSECURE_LMS_D_MESG_FIELD_SIZE]</td></tr>
<tr class="memdesc:a55eb825a4f4ea56d3a71d9d88ec8e822"><td class="mdescLeft">&#160;</td><td class="mdescRight">D_MESG - XSECURE_D_MESG Size - 2 Bytes, 20 to 21 bytes.  <a href="#a55eb825a4f4ea56d3a71d9d88ec8e822">More...</a><br/></td></tr>
<tr class="separator:a55eb825a4f4ea56d3a71d9d88ec8e822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ac54d0a4383cd26a14c95215b7655ae"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a7ac54d0a4383cd26a14c95215b7655ae">C</a> [XSECURE_LMS_C_FIELD_SIZE]</td></tr>
<tr class="memdesc:a7ac54d0a4383cd26a14c95215b7655ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">C - Randomizer per data Size - 32 Byte, 22 to 53 bytes.  <a href="#a7ac54d0a4383cd26a14c95215b7655ae">More...</a><br/></td></tr>
<tr class="separator:a7ac54d0a4383cd26a14c95215b7655ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae94bae98e8eea9184079307e12a7ff80"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#ae94bae98e8eea9184079307e12a7ff80">Digest</a> [XSECURE_LMS_DIGEST_SIZE]</td></tr>
<tr class="memdesc:ae94bae98e8eea9184079307e12a7ff80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Digest - Digest of data to be authenticated Size - 32 bytes, 0 to 31 bytes.  <a href="#ae94bae98e8eea9184079307e12a7ff80">More...</a><br/></td></tr>
<tr class="separator:ae94bae98e8eea9184079307e12a7ff80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ec2bf3dbf9fab80e5046d5c3394633"><td class="memItemLeft" align="right" valign="top">u8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xsecure__lms__ots_8h.html#a97ec2bf3dbf9fab80e5046d5c3394633">Checksum</a> [XSECURE_LMS_CHECKSUM_FIELD_SIZE]</td></tr>
<tr class="memdesc:a97ec2bf3dbf9fab80e5046d5c3394633"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checksum - Checksum on Digest Size - 2 bytes, 32nd &amp; 33rd byte.  <a href="#a97ec2bf3dbf9fab80e5046d5c3394633">More...</a><br/></td></tr>
<tr class="separator:a97ec2bf3dbf9fab80e5046d5c3394633"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="aeebd096c31f8e28bda96fb99ae3c708a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_DIGEST_CHECKSUM_SIZE</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_DIGEST_SIZE + \</div>
<div class="line">                                                XSECURE_LMS_CHECKSUM_FIELD_SIZE)</div>
</div><!-- fragment -->
<p>Digest of data to be authenticated concatenated with checksum value. </p>

</div>
</div>
<a class="anchor" id="a434d38a2acb11f42b7fed781844eb3ee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_MESSAGE_TO_DIGEST_PREFIX_SIZE</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_I_FIELD_SIZE + \</div>
<div class="line">                                                        XSECURE_LMS_Q_FIELD_SIZE + \</div>
<div class="line">                                                        XSECURE_LMS_D_MESG_FIELD_SIZE + \</div>
<div class="line">                                                        XSECURE_LMS_C_FIELD_SIZE)</div>
</div><!-- fragment -->
<p>Prefix fields length, before sending actual data to sha engine for digest. </p>

<p>Referenced by <a class="el" href="xsecure__lms__core_8h.html#a20f145ad946cac0682c7428afe35dc8f">XSecure_LmsHashMessage()</a>.</p>

</div>
</div>
<a class="anchor" id="ac3d009a0481c020ebf60f58d407264b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_PUB_KEY_TOTAL_SIZE</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_OTS_PUB_KEY_FIXED_FIELD_SIZE + \</div>
<div class="line">                                                        XSECURE_LMS_OTS_PUB_KEY_K_FIELD_SIZE)</div>
</div><!-- fragment -->
<p>OTS Public key total size. </p>

</div>
</div>
<a class="anchor" id="ac9927e5c3c5d95e9d1b82ffaf800c241"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_PUBKEY_I_OFFSET&#160;&#160;&#160;(0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Offset of 'I' field in OTS Public key. </p>

</div>
</div>
<a class="anchor" id="a15c74a74560860dfadce0dd25a9cbf1b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_PUBKEY_Q_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#ac9927e5c3c5d95e9d1b82ffaf800c241">XSECURE_LMS_OTS_PUBKEY_I_OFFSET</a> +\</div>
<div class="line">                                                                 XSECURE_LMS_I_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_ac9927e5c3c5d95e9d1b82ffaf800c241"><div class="ttname"><a href="xsecure__lms__ots_8h.html#ac9927e5c3c5d95e9d1b82ffaf800c241">XSECURE_LMS_OTS_PUBKEY_I_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_PUBKEY_I_OFFSET</div><div class="ttdoc">Offset of &amp;#39;I&amp;#39; field in OTS Public key. </div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:124</div></div>
</div><!-- fragment -->
<p>Offset of 'q' field in OTS Public key. </p>

</div>
</div>
<a class="anchor" id="adf5b0f6845109ee4715a5f00c732c0b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_C_FIELD_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#a57cc8baa8a82a27f721b46f46a21b159">XSECURE_LMS_OTS_SIGN_TYPE_FIELD_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_TYPE_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_a57cc8baa8a82a27f721b46f46a21b159"><div class="ttname"><a href="xsecure__lms__ots_8h.html#a57cc8baa8a82a27f721b46f46a21b159">XSECURE_LMS_OTS_SIGN_TYPE_FIELD_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_TYPE_FIELD_OFFSET</div><div class="ttdoc">Offset of &amp;#39;Type&amp;#39; field in OTS Signature buffer. </div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:133</div></div>
</div><!-- fragment -->
<p>Offset of 'C' field in OTS Signature buffer. </p>

<p>Referenced by <a class="el" href="xsecure__lms__core_8h.html#a981b22fbc50d9cd6f91c16604754f078">XSecure_HssInit()</a>.</p>

</div>
</div>
<a class="anchor" id="a57cc8baa8a82a27f721b46f46a21b159"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_TYPE_FIELD_OFFSET&#160;&#160;&#160;(0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Offset of 'Type' field in OTS Signature buffer. </p>

<p>Referenced by <a class="el" href="xsecure__lms__core_8h.html#a6b50f9fb052dd231c50ea15138f17ff7">XSecure_LmsSignatureVerification()</a>.</p>

</div>
</div>
<a class="anchor" id="a933c28504d62c99bb41fd687a98dda90"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_CURRENT_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">p</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_I_FIELD_SIZE +\</div>
<div class="line">                                                                XSECURE_LMS_Q_FIELD_SIZE +\</div>
<div class="line">                                                                XSECURE_LMS_D_PBLC_FIELD_SIZE +\</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_CURR_z_SIZE(p))</div>
</div><!-- fragment -->
<p>Total Size of buffer used in OTS verification, while considering current 'p' parameter. </p>

</div>
</div>
<a class="anchor" id="a4099a5d490b4e96ea8e446cdb9ef9f0e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_D_PBLC_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#ae8ca7a1a78fe23831689ed42f85486b7">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Q_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_Q_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_ae8ca7a1a78fe23831689ed42f85486b7"><div class="ttname"><a href="xsecure__lms__ots_8h.html#ae8ca7a1a78fe23831689ed42f85486b7">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Q_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Q_OFFSET</div><div class="ttdoc">Offset of &amp;#39;q&amp;#39; field in temporary buffer, where inner loops result is concatenated during OTS operatio...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:185</div></div>
</div><!-- fragment -->
<p>Offset of D_PBLC field in temporary buffer, where inner loops result is concatenated during OTS operations. </p>

</div>
</div>
<a class="anchor" id="ae4f452928f5c6d3dee20a89eb65ea74d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_I_OFFSET&#160;&#160;&#160;(0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Offset of 'I' field in temporary buffer, where inner loops result is concatenated during OTS operations. </p>

</div>
</div>
<a class="anchor" id="ae8ca7a1a78fe23831689ed42f85486b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Q_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#ae4f452928f5c6d3dee20a89eb65ea74d">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_I_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_I_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_ae4f452928f5c6d3dee20a89eb65ea74d"><div class="ttname"><a href="xsecure__lms__ots_8h.html#ae4f452928f5c6d3dee20a89eb65ea74d">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_I_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_I_OFFSET</div><div class="ttdoc">Offset of &amp;#39;I&amp;#39; field in temporary buffer, where inner loops result is concatenated during OTS operatio...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:180</div></div>
</div><!-- fragment -->
<p>Offset of 'q' field in temporary buffer, where inner loops result is concatenated during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a82176c002a5c65e1876ec23722ca8c9e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_TOTAL_SIZE</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_I_FIELD_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_Q_FIELD_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_D_PBLC_FIELD_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_z_SIZE)</div>
</div><!-- fragment -->
<p><pre class="fragment">Max possible size as supported
</pre><p> only till XSECURE_LMS_OTS_W2 </p>
<p>Total MAX Size of buffer used in OTS verification </p>

</div>
</div>
<a class="anchor" id="adf43d3cc0d824419b7f2e25d324735ec"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_Z_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#a4099a5d490b4e96ea8e446cdb9ef9f0e">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_D_PBLC_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_D_PBLC_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_a4099a5d490b4e96ea8e446cdb9ef9f0e"><div class="ttname"><a href="xsecure__lms__ots_8h.html#a4099a5d490b4e96ea8e446cdb9ef9f0e">XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_D_PBLC_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_D_PBLC_OFFSET</div><div class="ttdoc">Offset of D_PBLC field in temporary buffer, where inner loops result is concatenated during OTS opera...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:190</div></div>
</div><!-- fragment -->
<p>Offset of 'z' field in temporary buffer, where inner loops result is concatenated during OTS operations. </p>

</div>
</div>
<a class="anchor" id="aac4a22a134d85196ad6251a8625d0540"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_I_OFFSET&#160;&#160;&#160;(1U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Offset of 'I' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a872fd1b27436b36a3bdb133e5d93b546"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#a2aa682e71138d9b9168c6d9ccf8bb045">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Q_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_Q_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_a2aa682e71138d9b9168c6d9ccf8bb045"><div class="ttname"><a href="xsecure__lms__ots_8h.html#a2aa682e71138d9b9168c6d9ccf8bb045">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Q_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Q_OFFSET</div><div class="ttdoc">Offset of &amp;#39;q&amp;#39; field in temporary buffer, where inner loops result are stored, for reprocessing during...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:155</div></div>
</div><!-- fragment -->
<p>Offset of 'i' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a36a971ffbf11978decc4a0a1dc3cfc2d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#a872fd1b27436b36a3bdb133e5d93b546">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_a872fd1b27436b36a3bdb133e5d93b546"><div class="ttname"><a href="xsecure__lms__ots_8h.html#a872fd1b27436b36a3bdb133e5d93b546">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_OFFSET</div><div class="ttdoc">Offset of &amp;#39;i&amp;#39; field in temporary buffer, where inner loops result are stored, for reprocessing during...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:160</div></div>
</div><!-- fragment -->
<p>Offset of 'j' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a2aa682e71138d9b9168c6d9ccf8bb045"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Q_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#aac4a22a134d85196ad6251a8625d0540">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_I_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_I_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_aac4a22a134d85196ad6251a8625d0540"><div class="ttname"><a href="xsecure__lms__ots_8h.html#aac4a22a134d85196ad6251a8625d0540">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_I_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_I_OFFSET</div><div class="ttdoc">Offset of &amp;#39;I&amp;#39; field in temporary buffer, where inner loops result are stored, for reprocessing during...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:150</div></div>
</div><!-- fragment -->
<p>Offset of 'q' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a45f1bba20bcc06a4361b89c1d5a65668"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_TOTAL_SIZE</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(XSECURE_LMS_I_FIELD_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_Q_FIELD_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_i_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_SIZE + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Y_SIZE)</div>
</div><!-- fragment -->
<p>Total size of buffer, <a class="el" href="xsecure__lms__ots_8h.html#ad723b74a2a699cb721e81b18834d2b3f">XSecure_LmsOtsHashPerDigit</a>. </p>

</div>
</div>
<a class="anchor" id="a4e7bc6e10bad27014918aefba9c22e7f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Y_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#a36a971ffbf11978decc4a0a1dc3cfc2d">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_a36a971ffbf11978decc4a0a1dc3cfc2d"><div class="ttname"><a href="xsecure__lms__ots_8h.html#a36a971ffbf11978decc4a0a1dc3cfc2d">XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_j_OFFSET</div><div class="ttdoc">Offset of &amp;#39;j&amp;#39; field in temporary buffer, where inner loops result are stored, for reprocessing during...</div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:165</div></div>
</div><!-- fragment -->
<p>Offset of 'Y' field in temporary buffer, where inner loops result are stored, for reprocessing during OTS operations. </p>

</div>
</div>
<a class="anchor" id="a3b359b6616f5f14b2aec628127efedb3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_SIGN_Y_FIELD_OFFSET</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="xsecure__lms__ots_8h.html#adf5b0f6845109ee4715a5f00c732c0b5">XSECURE_LMS_OTS_SIGN_C_FIELD_OFFSET</a> + \</div>
<div class="line">                                                                XSECURE_LMS_C_FIELD_SIZE)</div>
<div class="ttc" id="xsecure__lms__ots_8h_html_adf5b0f6845109ee4715a5f00c732c0b5"><div class="ttname"><a href="xsecure__lms__ots_8h.html#adf5b0f6845109ee4715a5f00c732c0b5">XSECURE_LMS_OTS_SIGN_C_FIELD_OFFSET</a></div><div class="ttdeci">#define XSECURE_LMS_OTS_SIGN_C_FIELD_OFFSET</div><div class="ttdoc">Offset of &amp;#39;C&amp;#39; field in OTS Signature buffer. </div><div class="ttdef"><b>Definition:</b> xsecure_lms_ots.h:135</div></div>
</div><!-- fragment -->
<p>Offset of 'Y' field in OTS Signature buffer. </p>

</div>
</div>
<a class="anchor" id="ac558edd4dd7643d17f2378f538378ce2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_LMS_OTS_TYPE_MAX_SUPPORTED&#160;&#160;&#160;(7U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Max supported types, used for creating lookup table for parameters for types supported number should be max valid + 1 (as first slot will be for invalid parameterXSecure_LmsOtsType XSecure_LmsOtsType. </p>

<p>Referenced by <a class="el" href="xsecure__lms__ots_8h.html#a48db68f8b63048019c35a756e58d9181">XSecure_LmsOtsLookupParamSet()</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a05542fcb5897f19f42bef397a9ae5700"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef union <a class="el" href="union_x_secure___lms_data_digest__.html">XSecure_LmsDataDigest_</a>  <a class="el" href="xsecure__lms__ots_8h.html#a05542fcb5897f19f42bef397a9ae5700">XSecure_LmsDataDigest</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Digest for message to be authenticated, along with checksum. </p>
<p>Size = Digest (32) + Check sum (2) = 34 Bytes </p>

</div>
</div>
<a class="anchor" id="ac1d840c18fbf4e517287bf3ee6301481"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef union <a class="el" href="union_x_secure___lms_data_digest_fixed_fields__.html">XSecure_LmsDataDigestFixedFields_</a>  <a class="el" href="xsecure__lms__ots_8h.html#ac1d840c18fbf4e517287bf3ee6301481">XSecure_LmsDataDigestFixedFields</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Temporary buffer, used to send prefix fields to calculate digest for data to be authenticate. </p>
<p>Size = I (16) + q (4) + D_MESG (2) + C (32) = 54 Bytes </p>

</div>
</div>
<a class="anchor" id="ad723b74a2a699cb721e81b18834d2b3f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef union <a class="el" href="union_x_secure___lms_ots_hash_per_digit__.html">XSecure_LmsOtsHashPerDigit_</a>  <a class="el" href="xsecure__lms__ots_8h.html#ad723b74a2a699cb721e81b18834d2b3f">XSecure_LmsOtsHashPerDigit</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Temporary buffer, used in LMS OTS signature verification, used in hash chain to arrive at values which will be concatenated and hashed to get public value. </p>
<p>Size = 1 + 16 + 4 + 2 + 1 + H Len (32) = 56 Bytes </p>

</div>
</div>
<a class="anchor" id="a803c68a2b51e6f2aedd0030499bd932a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef union <a class="el" href="union_x_secure___lms_ots_public_key__.html">XSecure_LmsOtsPublicKey_</a>  <a class="el" href="xsecure__lms__ots_8h.html#a803c68a2b51e6f2aedd0030499bd932a">XSecure_LmsOtsPublicKey</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>LMS OTS Public key structure. </p>
<p>Size = 4 + 16 + 4 + H Len (32) = 56 Bytes </p>

</div>
</div>
<a class="anchor" id="aa8ec8aa23f647c6cc236d649e8b63464"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct_x_secure___lms_ots_signature__.html">XSecure_LmsOtsSignature_</a>  <a class="el" href="xsecure__lms__ots_8h.html#aa8ec8aa23f647c6cc236d649e8b63464">XSecure_LmsOtsSignature</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Partial LMS OTS Signature structure. </p>
<p>struct Size = 4 + 32 Sign size = 4 + 32 + (p * n) = 4 + n * (p+1) </p>

</div>
</div>
<a class="anchor" id="a4259aa07b5254dccc5ce3bedf2a7cb5c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef union <a class="el" href="union_x_secure___lms_ots_sign_to_pub_key_hash__.html">XSecure_LmsOtsSignToPubKeyHash_</a>  <a class="el" href="xsecure__lms__ots_8h.html#a4259aa07b5254dccc5ce3bedf2a7cb5c">XSecure_LmsOtsSignToPubKeyHash</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Structure used when validating LMS OTS, once hash chain is completed, result needs to be stored so that they can be further concatenated and hashed to get OTS public key, this provides a way to access members and fill data in a structured way. </p>
<p>Size = 16(I) + 4(q) + 2(D_PBLC) + (p * H Len (32)) </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="a934fb8a4fb645f4419a0c10eceb4b883"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883">XSecure_LmsOtslsIndex</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>No.of bits to left-shift in Checksum, in the 16 bit value Possible values are as supported by ROM. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a934fb8a4fb645f4419a0c10eceb4b883a4d6adf053e43c722afcd7dc7eafbfc12"></a>XSECURE_LMS_OTS_W4_LS</em>&nbsp;</td><td class="fielddoc">
<p>'ls' corrsponding to 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a934fb8a4fb645f4419a0c10eceb4b883a479e16a32a72d34466dcb570db3ebdba"></a>XSECURE_LMS_OTS_W8_LS</em>&nbsp;</td><td class="fielddoc">
<p>'ls' corrsponding to 'w' = 4 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a934fb8a4fb645f4419a0c10eceb4b883a0636fed8c37d4a35fce4dc7eb7e7d5aa"></a>XSECURE_LMS_OTS_LS_NOT_SUPPORTED</em>&nbsp;</td><td class="fielddoc">
<p>'ls' corrsponding to 'w' = 8 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a54c7dfec9549d6617d8bcd3bf7b1f8bd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bd">XSecure_LmsOtspIndex</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Is a sum of U + V, it is number of 'w' width digits possible in digest + checksum buffer Possible values are as supported by ROM. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a54c7dfec9549d6617d8bcd3bf7b1f8bda2b630ba4210f383d7cc53575cca1637d"></a>XSECURE_LMS_OTS_W4_P</em>&nbsp;</td><td class="fielddoc">
<p>'p' corrsponding to 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a54c7dfec9549d6617d8bcd3bf7b1f8bda8206e08695b310bd5b6769859e06179c"></a>XSECURE_LMS_OTS_W8_P</em>&nbsp;</td><td class="fielddoc">
<p>'p' corrsponding to 'w' = 4 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="ac44fed4428b1bce22f588c3c913818fd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Types of LMS_OTS supported. </p>
<dl class="section note"><dt>Note</dt><dd>Only 32 byte output is supported, i.e., 256 bit SHA or SHAKE are only supported, w=1 is not supported </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fda6619d07dcdfb27f24037d94c2da75b7b"></a>XSECURE_LMS_OTS_SHA256_N32_W4</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHA2-256, 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fdaa2c7ed54a7b6a5dfe926d865e7d0e097"></a>XSECURE_LMS_OTS_SHA256_N32_W8</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHA2-256, 'w' = 4 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fda350496cca3b0fceb91fa5611ab7080c3"></a>XSECURE_LMS_OTS_SHAKE_N32_W2</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHA2-256, 'w' = 8 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fda52b24128174e65c3d46d6b6db0675b34"></a>XSECURE_LMS_OTS_SHAKE_N32_W4</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHAKE-256, 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fdafd794b1bd3853e376d68972147b2e063"></a>XSECURE_LMS_OTS_SHAKE_N32_W8</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHAKE-256, 'w' = 4 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ac44fed4428b1bce22f588c3c913818fdab0be342315c7753f9987ad7d713b6fbd"></a>XSECURE_LMS_OTS_NOT_SUPPORTED</em>&nbsp;</td><td class="fielddoc">
<p>'n' = 32, 'H' = SHAKE-256, 'w' = 8 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a797bf08fbeb731c200889e97c2024349"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349">XSecure_LmsOtsuIndex</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Number of 'w' width digits possible in message Digest, excluding checksum Possible values are as supported by ROM. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a797bf08fbeb731c200889e97c2024349a0387d324313898d9fa5db0bc0ddd4058"></a>XSECURE_LMS_OTS_W4_U</em>&nbsp;</td><td class="fielddoc">
<p>'u' corrsponding to 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a797bf08fbeb731c200889e97c2024349a934a8457911f4003bf7c4584804cbe3e"></a>XSECURE_LMS_OTS_W8_U</em>&nbsp;</td><td class="fielddoc">
<p>'u' corrsponding to 'w' = 4 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a48ca7b856b1c924469c32ed0b974b8d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5">XSecure_LmsOtsvIndex</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Is the number of 'w' width digits possible in checksum Possible values are as supported by ROM. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a48ca7b856b1c924469c32ed0b974b8d5aabbb56f1b23fcf58fa2270a9ce7b942f"></a>XSECURE_LMS_OTS_W4_V</em>&nbsp;</td><td class="fielddoc">
<p>'v' corrsponding to 'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a48ca7b856b1c924469c32ed0b974b8d5a8b42f1fc9faa06cbb2cf38aab405e238"></a>XSECURE_LMS_OTS_W8_V</em>&nbsp;</td><td class="fielddoc">
<p>'v' corrsponding to 'w' = 4 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a98e7ae28a938a2adda1c9d415f68a3cd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cd">XSecure_LmsOtsWIndex</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Number of bits per digit Possible values are as supported by ROM, w=1 is not supported. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a98e7ae28a938a2adda1c9d415f68a3cda88b2c964e9fb3bddfec0436b3f6f5e0c"></a>XSECURE_LMS_OTS_W4</em>&nbsp;</td><td class="fielddoc">
<p>'w' = 2 </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a98e7ae28a938a2adda1c9d415f68a3cda507a403665f09b7704663ec47209f550"></a>XSECURE_LMS_OTS_W8</em>&nbsp;</td><td class="fielddoc">
<p>'w' = 4 </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a962337132813f098ed3a128cb4167b27"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 XSecure_LmsOtsCoeff </td>
          <td>(</td>
          <td class="paramtype">u8 const *const&#160;</td>
          <td class="paramname"><em>Arr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>ArrayIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>w</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function extracts the digits from the array for bytes. </p>
<dl class="section note"><dt>Note</dt><dd>S (represented in bits) = 0x1234 [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0] ^ | coef(S, 7, 1)</dd></dl>
<p>[1, 2, 3, 4] ^ | coef(S, 0, 4)</p>
<p>If i is larger than the number of w-bit values in S, then coef(S, i, w) is undefined, this cant be checked here</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Array</td><td>- Byte array from where the digit needs to be picked </td></tr>
    <tr><td class="paramname">ArrayIndex</td><td>- When array is divided into array of digits, i represents the index of digit </td></tr>
    <tr><td class="paramname"></td><td>w - Width in bits, for each digit allowed values</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>- digit value. </dd></dl>

<p>Referenced by <a class="el" href="xsecure__lms__ots_8h.html#ae4b1b7bba0abda9f7e5f7431cf2e07ce">XSecure_LmsOtsComputeChecksum()</a>.</p>

</div>
</div>
<a class="anchor" id="ae4b1b7bba0abda9f7e5f7431cf2e07ce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_LmsOtsComputeChecksum </td>
          <td>(</td>
          <td class="paramtype">const u8 *const&#160;</td>
          <td class="paramname"><em>Array</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>ArrayLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>ls</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32 *const&#160;</td>
          <td class="paramname"><em>Checksum</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates the checksum for a given array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Array</td><td>- Byte array ffor which checksum needs to be calculated </td></tr>
    <tr><td class="paramname">ArrayLen-</td><td>Length of input array </td></tr>
    <tr><td class="paramname">w</td><td>- Width in bits, for each digit allowed values </td></tr>
    <tr><td class="paramname">ls</td><td>- Number of bits to left-shift the calculated checksum </td></tr>
    <tr><td class="paramname">Checksum-</td><td>Pointer to address, where computed checksum needs to be copied</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS - Valid type is passed, and parameters are assigned</li>
<li>XST_FAILURE - If not a valid type is passed </li>
</ul>
</dd></dl>

<p>References <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a6d64080b375d7a684165177f5467469b">XSECURE_LMS_OTS_CHECKSUM_BUFF_INVALID_LEN_ERROR</a>, and <a class="el" href="xsecure__lms__ots_8c.html#a962337132813f098ed3a128cb4167b27">XSecure_LmsOtsCoeff()</a>.</p>

</div>
</div>
<a class="anchor" id="a48db68f8b63048019c35a756e58d9181"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_LmsOtsLookupParamSet </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a>&#160;</td>
          <td class="paramname"><em>Type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">XSecure_LmsOtsParam **&#160;</td>
          <td class="paramname"><em>Parameters</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function returns the parameters for the type of LMS OTS type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Type</td><td>XSecure_LmsOtsType, type of OTS algorithm selected </td></tr>
    <tr><td class="paramname">Parameters</td><td>Pointer to array location where all predefined parameter values are present XSecure_LmsOtsParam</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS - Valid type is passed, and parameters are assigned</li>
<li>XST_FAILURE - If not a valid type is passed </li>
</ul>
</dd></dl>
<p>lookup table for 'n', 'w', 'p', 'ls' &amp; Signature lengths</p>

<p>References <a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a0636fed8c37d4a35fce4dc7eb7e7d5aa">XSECURE_LMS_OTS_LS_NOT_SUPPORTED</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdab0be342315c7753f9987ad7d713b6fbd">XSECURE_LMS_OTS_NOT_SUPPORTED</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda6619d07dcdfb27f24037d94c2da75b7b">XSECURE_LMS_OTS_SHA256_N32_W4</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdaa2c7ed54a7b6a5dfe926d865e7d0e097">XSECURE_LMS_OTS_SHA256_N32_W8</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda350496cca3b0fceb91fa5611ab7080c3">XSECURE_LMS_OTS_SHAKE_N32_W2</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fda52b24128174e65c3d46d6b6db0675b34">XSECURE_LMS_OTS_SHAKE_N32_W4</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fdafd794b1bd3853e376d68972147b2e063">XSECURE_LMS_OTS_SHAKE_N32_W8</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a6ed7cfb9208ac3bc2fa03c7f076878e5">XSECURE_LMS_OTS_TYPE_LOOKUP_GLITCH_ERROR</a>, <a class="el" href="xsecure__lms__ots_8h.html#ac558edd4dd7643d17f2378f538378ce2">XSECURE_LMS_OTS_TYPE_MAX_SUPPORTED</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574acc6b3fc14a0503e220be85b8c04f88a9">XSECURE_LMS_OTS_TYPE_UNSUPPORTED_ERROR</a>, <a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cda88b2c964e9fb3bddfec0436b3f6f5e0c">XSECURE_LMS_OTS_W4</a>, <a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a4d6adf053e43c722afcd7dc7eafbfc12">XSECURE_LMS_OTS_W4_LS</a>, <a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bda2b630ba4210f383d7cc53575cca1637d">XSECURE_LMS_OTS_W4_P</a>, <a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349a0387d324313898d9fa5db0bc0ddd4058">XSECURE_LMS_OTS_W4_U</a>, <a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5aabbb56f1b23fcf58fa2270a9ce7b942f">XSECURE_LMS_OTS_W4_V</a>, <a class="el" href="xsecure__lms__ots_8h.html#a98e7ae28a938a2adda1c9d415f68a3cda507a403665f09b7704663ec47209f550">XSECURE_LMS_OTS_W8</a>, <a class="el" href="xsecure__lms__ots_8h.html#a934fb8a4fb645f4419a0c10eceb4b883a479e16a32a72d34466dcb570db3ebdba">XSECURE_LMS_OTS_W8_LS</a>, <a class="el" href="xsecure__lms__ots_8h.html#a54c7dfec9549d6617d8bcd3bf7b1f8bda8206e08695b310bd5b6769859e06179c">XSECURE_LMS_OTS_W8_P</a>, <a class="el" href="xsecure__lms__ots_8h.html#a797bf08fbeb731c200889e97c2024349a934a8457911f4003bf7c4584804cbe3e">XSECURE_LMS_OTS_W8_U</a>, <a class="el" href="xsecure__lms__ots_8h.html#a48ca7b856b1c924469c32ed0b974b8d5a8b42f1fc9faa06cbb2cf38aab405e238">XSECURE_LMS_OTS_W8_V</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga5738537e51cc4a10f5753b092955c4b0">XSECURE_SHA2_256_HASH_LEN</a>, <a class="el" href="group__xsecure__sha__example__apis.html#gad83e90d954ca31ac3d9cc687321cdb2d">XSECURE_SHAKE_256</a>, and <a class="el" href="group__xsecure__helper__server__apis.html#ga7af13060e1711b13d1d20bdbed3c20f5">XSECURE_SHAKE_256_HASH_LEN</a>.</p>

<p>Referenced by <a class="el" href="xsecure__lms__core_8h.html#a112da8c38a140d02852bd8f93ab78e2f">XSecure_HssFinish()</a>, <a class="el" href="xsecure__lms__core_8h.html#a981b22fbc50d9cd6f91c16604754f078">XSecure_HssInit()</a>, and <a class="el" href="xsecure__lms__core_8h.html#a6b50f9fb052dd231c50ea15138f17ff7">XSecure_LmsSignatureVerification()</a>.</p>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a7ac54d0a4383cd26a14c95215b7655ae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 C[XSECURE_LMS_C_FIELD_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>C - Randomizer per data Size - 32 Byte, 22 to 53 bytes. </p>

</div>
</div>
<a class="anchor" id="a97ec2bf3dbf9fab80e5046d5c3394633"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 Checksum[XSECURE_LMS_CHECKSUM_FIELD_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Checksum - Checksum on Digest Size - 2 bytes, 32nd &amp; 33rd byte. </p>

</div>
</div>
<a class="anchor" id="a55eb825a4f4ea56d3a71d9d88ec8e822"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 D_MESG[XSECURE_LMS_D_MESG_FIELD_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>D_MESG - XSECURE_D_MESG Size - 2 Bytes, 20 to 21 bytes. </p>

</div>
</div>
<a class="anchor" id="a6383a70e17a038a7995b71be0f5e2107"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 D_PBLC[2U]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>D_PBLC - XSECURE_D_PBLC Size - 2 Bytes, 20 to 21 bytes. </p>

</div>
</div>
<a class="anchor" id="ae94bae98e8eea9184079307e12a7ff80"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 Digest[XSECURE_LMS_DIGEST_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Digest - Digest of data to be authenticated Size - 32 bytes, 0 to 31 bytes. </p>

</div>
</div>
<a class="anchor" id="a377605accacdcb3accbf35fa586c7fc0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 I[XSECURE_LMS_I_FIELD_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>I - Merkle Tree's unique identifier (uniformly random 16-byte string) Size - 16 bytes, 4 to 19 bytes in public key. </p>
<p>I - Merkle Tree's unique identifier (uniformly random 16-byte string) Size - 16 bytes, 0 to 15 bytes.</p>
<p>I - Merkle Tree's unique identifier (uniformly random 16-byte string) Size - 16 bytes, 1 to 16 bytes. </p>

</div>
</div>
<a class="anchor" id="a393f638b7c12c0c9cb43973cf6aab5c2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u16 i</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>i - Digit position in (Digest || Checksum), 0 to (p-1) digits. </p>
<p>Size - 2 Bytes, 21 to 22 bytes </p>

</div>
</div>
<a class="anchor" id="a8a71261a266a41e4450a2f006404ea8a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 j</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>j - Index for inner loop during signature verification, starts at digit value in (Digest || Checksum) ends at (2^w - 1). </p>
<p>Size - 1 Byte, 23nd byte </p>

</div>
</div>
<a class="anchor" id="a1409f77262465120c3094dcd039e1f32"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 K[XSECURE_LMS_OTS_PUB_KEY_K_FIELD_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>K - H(I || u32str(q) || u16str(D_PBLC) || y[0] || ... </p>
<p>|| y[p-1]) H is a hash function, ROM supports only SHA2-256 and SHAKE-256 both are of 32Byte output len I &amp; q remain same as described above D_PBLC is a constant XSECURE_D_PBLC y[0] to y[p-1] is calculated from private key </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga75b2f22f2f6c3bdb9529025c8ecf58f2">XSecure_EllipticSignGenerateKat()</a>, and <a class="el" href="group__xsecure__kat__server__apis.html#gaadf5b20ff2b268460f7925bd114b7f1f">XSecure_GetKatEccEphemeralKey()</a>.</p>

</div>
</div>
<a class="anchor" id="a5825356ee1c7b65915d9daac40647fb3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 q</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>q - The leaf number q, goes from 0 on left most leaf to right most (2^h -1), in a single tree Size - 4 bytes, 20 to 23 bytes in public key </p>
<p>q - The leaf number q, goes from 0 on left most leaf to right most (2^h -1), in a single tree Size - 4 bytes, 16 to 19 bytes</p>
<p>q - The leaf number q, goes from 0 on left most leaf to right most (2^h -1), in a single tree Size - 4 bytes, 17 to 20 bytes </p>

</div>
</div>
<a class="anchor" id="a82c9159ef295db215ddbc4ab9ddd38e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 Reserved</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>1 reserved byte added at start of buffer, to manage word aligned sha finish copies to buffer </p>

</div>
</div>
<a class="anchor" id="a8edafe9629f0c895a14f0e7445bcbd5c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a> Type</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Type <a class="el" href="xsecure__lms__ots_8h.html#ac44fed4428b1bce22f588c3c913818fd">XSecure_LmsOtsType</a> Size - 4 bytes, 0 to 3 bytes in public key. </p>

</div>
</div>
<a class="anchor" id="a41fbc9ee57e6872539319419856a7d55"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 y[XSECURE_LMS_OTS_SIGN_VERIF_TMP_BUFF_Y_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>y[] - 'n' bytes picked from LMS OTS signatures. </p>
<p>y[0] to y[p-1], each 'n' sized bytes will be copied here and passed into HASH engine along with other fields. Size - 32 Bytes, 24 to 55 bytes </p>

</div>
</div>
<a class="anchor" id="a588f37e411aac68f85ebb950026ffb9a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u8 z[XSECURE_LMS_OTS_SIGN_VERIF_CHAIN_TMP_BUFF_z_SIZE]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>z - Each z is a XSECURE_LMS_N_FIELD_SIZE byte length, and ranges from 0 to p-1 Size - (32 Bytes * p) </p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
